package utils;

import org.apache.commons.lang3.StringUtils;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import controller.RoleController;

// 用户权限拦截器，实现Interceptor接口
public class UserInterceptor implements Interceptor {

    // 拦截方法，处理请求前的逻辑
    @Override
    public void intercept(Invocation inv) {
        // 获取当前控制器
        RoleController controller = (RoleController) inv.getController();
        
        // 获取当前请求方法所需的角色
        int icrole = controller.getRole();
        System.out.println("方法要求角色:" + icrole);
        
        // 从session中获取登录用户信息
        loginuser user = (loginuser) controller.getSession().getAttribute("user");

        // 检查用户是否已登录      
        if (user == null) {
            // 用户未登录，返回错误信息
            controller.renderJson(IResult.fail("Err,No. 2002."));
            return;
        }
        
        // 获取用户角色 
        int trole = user.getUserrole();  
        
         // 将普通用户角色转换为专业用户角色  临时注销
        if (trole == RoleController.NORUSER) {
            trole = RoleController.PROUSER;
        }

        // 如果用户角色与方法要求角色匹配，则继续执行
        if (trole == icrole) {
            inv.invoke(); // 调用下一个拦截器或目标方法
        }
        // 否则不执行任何操作，可以在这里添加处理未授权访问的逻辑
    }
}
